class Solution {
    public:
        int longestCommonSubsequence(string text1, string text2) {
            int m = text1.size(),n=text2.size();
            //dp[i][j]在text1在0-i 和text2在0-j的最长公共子序列长度
            vector<vector<int>> dp(m+1,vector<int>(n+1,0));
            text1 = " "+text1;
            text2 = " "+text2;
            int ret = 0;
            for(int i = 1 ; i < m+1 ;i++){
                for(int j = 1; j < n+1; j++ ){
                    if(text1[i] == text2[j]){
                        dp[i][j] = dp[i-1][j-1]+1;
                    }else{
                        dp[i][j] = max({dp[i-1][j],dp[i][j-1],dp[i-1][j-1]});
                    }
                    ret = max(ret,dp[i][j]);
                }
            }
            return ret;
        }
    };